處理中文字換行
func (g *App) Update() error {
// ...略
if inpututil.IsKeyJustPressed(ebiten.KeyControl) {
go func(prompt string) {
resp, err := g.bot.Ask(prompt)
if err != nil {
log.Fatal(err)
}
c := strings.Split(resp.Content, "\n")
for i := 0; i < len(c); i++ {
c[i] = addNewlines(c[i])
}
g.content = strings.Join(c, "\n")
g.prompt = ""
}(g.prompt)
g.prompt = "等待中..."
}
// ...略
}
// 每三十個字新增換行
func addNewlines(s string) string {
b := strings.Builder{}
count := 0
for _, ss := range s {
count++
if count%30 == 0 {
b.WriteString("\n")
}
b.WriteRune(ss)
}
return b.String()
}